package Demo8;

public class Consumer extends Thread {

    @Override
    public void run() {
        while (true) {
            // 锁住缓冲区
            synchronized (Buffer.lock) {
                // 判断规定的缓冲区总个数是否为0
                if (Buffer.capacity == 0) {
                    break; // 退出锁状态
                }
                // 判断是否可以进入缓冲区
                if (Buffer.flag == 0) {
                    // 不能进入 表示缓冲区为空，等待
                    try {
                        Buffer.lock.wait();
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                } else {
                    // 可以进入缓冲区，缓冲区不为空
                    // 进行消费
                    Buffer.capacity--;
                    System.out.println("消费者消费了一个资源，还能消费"+Buffer.capacity+"个资源");
                    // 唤醒生产者进行生产
                    Buffer.lock.notifyAll();
                    // 修改缓冲区flag让消费者不在进入消费(交替执行)
                    Buffer.flag = 0;
                }
            }
        }
    }

}
